Apache Commons Collections লাইব্রেরিতে Functors এবং Predicates ডাটা স্ট্রাকচার এবং কোডের কার্যপ্রণালী (functional behavior) উন্নত করার জন্য শক্তিশালী টুল হিসেবে কাজ করে। এগুলি অবজেক্ট বা কালেকশন এর উপর কার্যপ্রণালী প্রয়োগে সহায়তা করে, যেমন ফিল্টারিং, ট্রান্সফরমেশন, এবং শর্তাবলী অনুসরণ।
Apache Commons Collections এ Functor মূলত Transformer ইন্টারফেসের মাধ্যমে কার্যকরী হয়, যা কোন ইনপুট গ্রহণ করে এবং তার উপর একটি ট্রান্সফর্মেশন প্রয়োগ করে।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.functors.TransformerUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FunctorExample {
public static void main(String[] args) {
// List of strings
List<String> fruits = Arrays.asList("apple", "banana", "cherry");
// Functor for transforming to uppercase
Transformer<String, String> toUpperCaseTransformer = TransformerUtils.constantTransformer("UPPER");
// Apply transformer to each element
List<String> transformed = fruits.stream()
.map(toUpperCaseTransformer::transform)
.collect(Collectors.toList());
System.out.println(transformed); // Output: [UPPER, UPPER, UPPER]
}
}
এখানে:
Predicate ব্যবহার করে আপনি শর্ত প্রমাণ করতে বা উপাদান ফিল্টার করতে পারেন। Predicate ব্যবহৃত হয় select()
মেথডে, যা একটি কালেকশনের উপর শর্ত অনুযায়ী ফিল্টার প্রয়োগ করতে সহায়ক।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class PredicateExample {
public static void main(String[] args) {
// List of strings
List<String> fruits = Arrays.asList("apple", "banana", "cherry");
// Predicate to check if the string starts with 'b'
Predicate<String> startsWithB = new Predicate<String>() {
@Override
public boolean evaluate(String fruit) {
return fruit.startsWith("b");
}
};
// Filter list using Predicate
List<String> filteredFruits = (List<String>) CollectionUtils.select(fruits, startsWithB);
System.out.println(filteredFruits); // Output: [banana]
}
}
এখানে:
and()
এবং or()
:Predicate এর মধ্যে একাধিক শর্ত যোগ করতে আপনি and()
এবং or()
মেথড ব্যবহার করতে পারেন, যা একাধিক শর্ত সংযুক্ত করতে সহায়তা করে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class AdvancedPredicateExample {
public static void main(String[] args) {
// List of strings
List<String> fruits = Arrays.asList("apple", "banana", "cherry", "blueberry");
// Predicate to check if the string starts with 'b'
Predicate<String> startsWithB = fruit -> fruit.startsWith("b");
// Predicate to check if the string has more than 5 characters
Predicate<String> moreThanFiveChars = fruit -> fruit.length() > 5;
// Combine the predicates using 'and' (both conditions must be true)
Predicate<String> combinedPredicate = startsWithB.and(moreThanFiveChars);
// Filter list using combined predicate
List<String> filteredFruits = (List<String>) CollectionUtils.select(fruits, combinedPredicate);
System.out.println(filteredFruits); // Output: [banana, blueberry]
}
}
এখানে:
and()
মেথড ব্যবহার করে দুটি শর্তকে একত্রে ব্যবহার করা হয়েছে, যেখানে শুধুমাত্র "b" দিয়ে শুরু হওয়া এবং ৫টির বেশি অক্ষরের ফলগুলো ফিল্টার করা হয়েছে।Criteria | Functor | Predicate |
---|---|---|
Purpose | Performs a transformation on data | Evaluates a condition (returns boolean) |
Return Type | Transforms data into another form | Returns a boolean (true/false) |
Use Case | Used for transforming data (e.g., changing format) | Used for filtering or testing conditions |
Common Methods | transform() | evaluate() |
Functors এবং Predicates হল Apache Commons Collections এর দুইটি শক্তিশালী ফিচার, যা Java Collections Framework এর মাধ্যমে কার্যপ্রণালী প্রয়োগ এবং ডাটা ম্যানিপুলেশনকে আরও কার্যকরী করে তোলে। Functor ব্যবহার করে আপনি ডাটা ট্রান্সফরমেশন করতে পারেন, যেমন মান পরিবর্তন বা অন্য কোনো অপারেশন। অন্যদিকে, Predicate ব্যবহার করে আপনি কালেকশনের উপাদানগুলির উপর শর্ত প্রয়োগ করে ফিল্টারিং এবং শর্ত যাচাই করতে পারেন। এই দুটি ফিচার কমপ্লেক্স ডাটা ম্যানিপুলেশন ও অপারেশনগুলো সহজভাবে বাস্তবায়ন করতে সাহায্য করে।
Apache Commons Collections লাইব্রেরির PredicateUtils
ক্লাসটি বিভিন্ন Predicate
অপারেশন তৈরি করার জন্য সহায়ক ইউটিলিটি মেথড সরবরাহ করে। Predicate একটি ফাংশনাল প্রোগ্রামিং কৌশল যা একটি ইনপুট গ্রহণ করে এবং একটি বুলিয়ান মান (true/false) রিটার্ন করে, যা শর্ত নির্ধারণ করে। PredicateUtils
ক্লাসটি এই predicates তৈরি ও কম্বাইন করার কাজকে সহজ করে তোলে, এবং collection-এর উপাদানগুলিতে শর্ত প্রয়োগ করার জন্য একটি শক্তিশালী টুল সরবরাহ করে।
এই পোস্টে আমরা PredicateUtils
এর বিভিন্ন উন্নত ব্যবহার কৌশল নিয়ে আলোচনা করব এবং দেখব কীভাবে আপনি একাধিক predicates কম্বাইন বা ফিল্টার করতে পারেন।
PredicateUtils
এর বৈশিষ্ট্য এবং কার্যকারিতাPredicateUtils
ক্লাসে কিছু খুবই শক্তিশালী মেথড রয়েছে যা আপনাকে predicate তৈরি, একাধিক predicate একসাথে কম্বাইন এবং অন্যান্য ফাংশনাল শর্ত প্রয়োগে সহায়তা করে। এর কিছু প্রধান বৈশিষ্ট্য:
allPredicate()
: একটি নতুন predicate তৈরি করে যা সমস্ত উপাদানের জন্য সত্য হয়।anyPredicate()
: একটি নতুন predicate তৈরি করে যা যে কোন উপাদানের জন্য সত্য হতে পারে।not()
: একটি predicate এর বিপরীত শর্ত তৈরি করে।and()
: দুটি বা ততোধিক predicate কে একত্রে যুক্ত করে একটি যৌথ শর্ত তৈরি করে।or()
: দুটি বা ততোধিক predicate কে একত্রে যুক্ত করে একটি যে কোন শর্তের ভিত্তিতে সত্য হয় এমন শর্ত তৈরি করে।allPredicate()
: সমস্ত উপাদানের জন্য সত্য হবে এমন একটি predicate তৈরি করা।anyPredicate()
: কোনো একটি উপাদান সত্য হলে, শর্ত পাস করবে এমন একটি predicate তৈরি করা।not()
: একটি predicate এর বিপরীত শর্ত তৈরি করা।and()
: দুটি বা ততোধিক predicate এর যৌথ শর্ত তৈরি করা।or()
: দুটি বা ততোধিক predicate এর যৌথ শর্ত তৈরি করা, যেখানে যে কোনো একটি শর্ত সত্য হলে, পুরো predicate সত্য হবে।allPredicate()
উদাহরণ:allPredicate()
মেথডটি একটি predicate তৈরি করে যা নিশ্চিত করে যে সমস্ত উপাদান সেই শর্তে পাস করবে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.PredicateUtils;
import java.util.Arrays;
import java.util.List;
public class PredicateUtilsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(2, 4, 6, 8, 10);
// Create a predicate that checks if all numbers are even
Predicate<Integer> allEven = PredicateUtils.allPredicate(new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0; // Check if number is even
}
});
// Check if all numbers are even
boolean result = true;
for (Integer number : numbers) {
if (!allEven.evaluate(number)) {
result = false;
break;
}
}
System.out.println("All numbers are even: " + result); // Output: true
}
}
PredicateUtils.allPredicate()
একটি predicate তৈরি করছে যা নিশ্চিত করে যে প্রতিটি উপাদান even (যুগল) হতে হবে।allEven.evaluate()
মেথডটি প্রতিটি উপাদান যাচাই করে এবং যদি কোনো এক উপাদান শর্ত পূরণ না করে তবে এটি false রিটার্ন করবে।anyPredicate()
উদাহরণ:anyPredicate()
মেথডটি একটি predicate তৈরি করে যা কোনো একটি উপাদান শর্ত পূর্ণ করলে তা সত্য হবে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.PredicateUtils;
import java.util.Arrays;
import java.util.List;
public class PredicateUtilsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 3, 5, 7, 10);
// Create a predicate that checks if any number is greater than 5
Predicate<Integer> anyGreaterThanFive = PredicateUtils.anyPredicate(new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number > 5; // Check if number is greater than 5
}
});
// Check if any number is greater than 5
boolean result = false;
for (Integer number : numbers) {
if (anyGreaterThanFive.evaluate(number)) {
result = true;
break;
}
}
System.out.println("Any number is greater than 5: " + result); // Output: true
}
}
anyPredicate()
একটি predicate তৈরি করছে যা নিশ্চিত করে যে কোনো একটি উপাদান যদি ৫ এর বেশি হয় তবে এটি সত্য রিটার্ন করবে।anyGreaterThanFive.evaluate()
মেথডটি উপাদান যাচাই করে এবং যদি কোনো একটি উপাদান শর্ত পূর্ণ করে, তাহলে এটি সত্য রিটার্ন করবে।and()
উদাহরণ:and()
মেথডটি দুটি predicate একত্রে যুক্ত করে একটি যৌথ শর্ত তৈরি করে। দুটি শর্তই পূর্ণ হতে হবে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.PredicateUtils;
import java.util.Arrays;
import java.util.List;
public class PredicateUtilsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(2, 4, 6, 7, 10);
// Create two predicates: check if number is even and greater than 5
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0; // Check if number is even
}
};
Predicate<Integer> greaterThanFive = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number > 5; // Check if number is greater than 5
}
};
// Combine the predicates using and()
Predicate<Integer> isEvenAndGreaterThanFive = PredicateUtils.and(isEven, greaterThanFive);
// Check if any number satisfies both conditions
for (Integer number : numbers) {
if (isEvenAndGreaterThanFive.evaluate(number)) {
System.out.println(number + " satisfies both conditions");
}
}
}
}
6 satisfies both conditions
10 satisfies both conditions
and()
মেথডটি দুটি predicate (একটি even চেক এবং অন্যটি greater than 5 চেক) একত্রে ব্যবহার করছে।6
এবং 10
শর্ত পূর্ণ করেছে, কারণ তাদের উভয় শর্তই পূর্ণ হয়েছে।or()
উদাহরণ:or()
মেথডটি দুটি predicate একত্রে যুক্ত করে একটি যৌথ শর্ত তৈরি করে, যেখানে যেকোনো একটি শর্ত পূর্ণ হলেই তা সত্য হবে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.PredicateUtils;
import java.util.Arrays;
import java.util.List;
public class PredicateUtilsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 3, 5, 7, 10);
// Create two predicates: check if number is even or greater than 5
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0; // Check if number is even
}
};
Predicate<Integer> greaterThanFive = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number > 5; // Check if number is greater than 5
}
};
// Combine the predicates using or()
Predicate<Integer> isEvenOrGreaterThanFive = PredicateUtils.or(isEven, greaterThanFive);
// Check if any number satisfies at least one condition
for (Integer number : numbers) {
if (isEvenOrGreaterThanFive.evaluate(number)) {
System.out.println(number + " satisfies at least one condition");
}
}
}
}
1 satisfies at least one condition
3 satisfies at least one condition
5 satisfies at least one condition
7 satisfies at least one condition
10 satisfies at least one condition
or()
মেথডটি দুটি predicate (একটি even চেক এবং অন্যটি greater than 5 চেক) একত্রে ব্যবহার করছে।or()
শর্ত পূর্ণ করেছে।PredicateUtils
Apache Commons Collections লাইব্রেরির একটি শক্তিশালী ক্লাস যা বিভিন্ন predicate অপারেশন এবং তাদের কম্বিনেশন তৈরি করতে সহায়তা করে। PredicateUtils
এর মেথড যেমন allPredicate()
, anyPredicate()
, and()
, এবং or()
আপনাকে একাধিক শর্তের ভিত্তিতে কালেকশনের উপাদানগুলো ফিল্টার করতে সহায়তা করে। এটি আপনাকে ফাংশনাল শর্তগুলির প্রয়োগ ও ম্যানিপুলেশন সহজ এবং কার্যকরীভাবে করতে সহায়তা করে।
অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি ফাংশনাল প্রোগ্রামিং কনসেপ্টের উপর ভিত্তি করে বিভিন্ন ধরনের ফাংশনাল ইউটিলিটি সরবরাহ করে, যার মধ্যে FunctorChain এবং Composite Functors একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি মূলত একাধিক Functor (ফাংশন) এর সমন্বয়ে তৈরি হয়, যেখানে একাধিক ফাংশনকে একটি শৃঙ্খলায় (chain) বা সংমিশ্রণে (composite) একত্রে কার্যকর করা হয়।
Functor সাধারণভাবে একটি ফাংশনাল একক হিসেবে কাজ করে, যা একটি ইনপুট গ্রহণ করে এবং একটি আউটপুট প্রদান করে। FunctorChain এবং Composite Functors এর মাধ্যমে আপনি একাধিক ফাংশনকে একত্রে একসাথে প্রয়োগ করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা এবং পারফরম্যান্স উন্নত করতে সাহায্য করে।
FunctorChain একটি ফাংশনের একটি শৃঙ্খলা (chain) তৈরি করে, যেখানে একাধিক functors একে অপরের পর পর কাজ করে। এটি এমন একটি প্রক্রিয়া যেখানে প্রথম ফাংশনের আউটপুট পরবর্তী ফাংশনের ইনপুট হিসেবে ব্যবহৃত হয় এবং এভাবে শৃঙ্খলবদ্ধভাবে একাধিক ফাংশন কাজ করে।
import org.apache.commons.collections4.functors.FunctorChain;
import org.apache.commons.collections4.functors.StringToUpperCaseTransformer;
import org.apache.commons.collections4.functors.StringToLowerCaseTransformer;
public class FunctorChainExample {
public static void main(String[] args) {
// Create functors for transforming a string
StringToUpperCaseTransformer toUpperCase = new StringToUpperCaseTransformer();
StringToLowerCaseTransformer toLowerCase = new StringToLowerCaseTransformer();
// Create a FunctorChain with two transformers
FunctorChain<Object> functorChain = new FunctorChain<>(toUpperCase, toLowerCase);
// Apply the FunctorChain on a string
String result = (String) functorChain.transform("Hello World");
// Output the result
System.out.println(result); // Output: hello world
}
}
এখানে:
Composite Functors হল এমন একটি কৌশল যেখানে একাধিক functors একত্রিত করা হয় এবং তাদেরকে একটি একক ফাংশন হিসাবে প্রয়োগ করা হয়। এটি FunctorChain এর মতো, তবে এখানে প্রতিটি ফাংশন সম্পূর্ণভাবে একটি একক ফাংশন হিসেবে কাজ করে এবং তা অনেকগুলো ফাংশনের সংমিশ্রণ হতে পারে।
import org.apache.commons.collections4.functors.FunctorUtils;
import org.apache.commons.collections4.functors.StringToUpperCaseTransformer;
import org.apache.commons.collections4.functors.StringToLowerCaseTransformer;
public class CompositeFunctorsExample {
public static void main(String[] args) {
// Create functors for transforming a string
StringToUpperCaseTransformer toUpperCase = new StringToUpperCaseTransformer();
StringToLowerCaseTransformer toLowerCase = new StringToLowerCaseTransformer();
// Create a Composite Functor that applies both transformations
FunctorUtils.TransformedTransformer compositeFunctor =
new FunctorUtils.TransformedTransformer(toUpperCase, toLowerCase);
// Apply the Composite Functor on a string
String result = (String) compositeFunctor.transform("Hello World");
// Output the result
System.out.println(result); // Output: hello world
}
}
এখানে:
পয়েন্ট | FunctorChain | Composite Functors |
---|---|---|
বৈশিষ্ট্য | একাধিক ফাংশন একের পর এক প্রয়োগ করা হয়। | একাধিক ফাংশন সংমিশ্রিত হয়ে একটি একক ফাংশন হিসেবে কাজ করে। |
ফাংশন একত্রিতকরণ | ফাংশনগুলো শৃঙ্খলভাবে একের পর এক প্রয়োগ করা হয়। | ফাংশনগুলো একত্রিত হয়ে একটি একক ফাংশন হিসেবে কার্যকরী হয়। |
ফাংশন সংমিশ্রণ | শৃঙ্খলা অনুসারে (sequentially) ফাংশনগুলিকে সংমিশ্রিত করা হয়। | একাধিক ফাংশনকে একটি composite হিসেবে সংমিশ্রিত করা হয়। |
ব্যবহার | একাধিক ট্রান্সফরমেশন প্রয়োগ করতে ব্যবহার হয়। | একাধিক ফাংশনকে একটি একক ফাংশনে মিশ্রিত করে প্রক্রিয়া করার জন্য ব্যবহৃত হয়। |
FunctorChain এবং Composite Functors উভয়ই Apache Commons Collections লাইব্রেরির শক্তিশালী ফাংশনাল প্রোগ্রামিং কৌশল। FunctorChain একাধিক ফাংশনকে শৃঙ্খলভাবে প্রয়োগ করতে সাহায্য করে, যেখানে Composite Functors একাধিক ফাংশনকে একটি একক ফাংশনে সংমিশ্রিত করে। এই দুটি কৌশল ব্যবহার করে আপনি জাভা প্রোগ্রামে ফাংশনাল অপারেশনগুলোকে আরো কার্যকরী ও পুনঃব্যবহারযোগ্য করতে পারেন।
Apache Commons Collections লাইব্রেরি Predicated Collection তৈরি করার জন্য একটি শক্তিশালী ইউটিলিটি সরবরাহ করে, যা predicate-based filtering প্রক্রিয়া ব্যবহার করে। Predicate হল একটি শর্ত যা true অথবা false রিটার্ন করে এবং Predicated Collection হলো একটি কালেকশন যা শুধুমাত্র সেই উপাদানগুলো ধারণ করে যা predicate শর্ত পূর্ণ করে।
এটি Collections-এ উপাদানগুলোর উপর filtering করতে সাহায্য করে, যা সাধারণভাবে validation বা condition-based inclusion হিসাবে ব্যবহৃত হয়।
Predicate একটি ফাংশনাল কনসেপ্ট যা একটি ইনপুট নেয় এবং boolean রিটার্ন করে, যা সাধারণত কোনো শর্ত পরীক্ষা করার জন্য ব্যবহৃত হয়। যেমন, একটি মান পরীক্ষা করা যে তা নির্দিষ্ট একটি সীমার মধ্যে আছে কিনা অথবা কোনো অবস্থা পূর্ণ করছে কিনা।
এটি Apache Commons Collections এ Predicate
ইন্টারফেস হিসেবে বাস্তবায়িত, এবং এখানে বিভিন্ন predicate তৈরি করা এবং কালেকশনগুলিতে predicate-based filtering প্রয়োগ করা যায়।
Predicated Collection হল এমন একটি Collection (যেমন List, Set ইত্যাদি) যা predicate এর মাধ্যমে ফিল্টার করা হয়। এটি একটি Predicate ফাংশন ব্যবহার করে উপাদানগুলোকে যাচাই করে, এবং শুধুমাত্র সেই উপাদানগুলো সংগ্রহে থাকে যা শর্ত পূর্ণ করে।
Apache Commons Collections লাইব্রেরিতে PredicatedCollection
ক্লাসটি ব্যবহৃত হয় predicate তৈরি করে এবং নির্দিষ্ট শর্ত অনুযায়ী কালেকশনের উপাদান ফিল্টার করার জন্য।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.collection.PredicatedCollection;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("orange");
// Predicate তৈরি করা (যেখানে উপাদানটি 'a' দিয়ে শুরু হতে হবে)
Predicate<String> startsWithAPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.startsWith("a");
}
};
// PredicatedCollection তৈরি করা
PredicatedCollection<String> predicatedCollection = new PredicatedCollection<>(list, startsWithAPredicate);
// PredicatedCollection এর উপাদান ফিল্টার করা
System.out.println("Filtered Collection: " + predicatedCollection);
}
}
আউটপুট:
Filtered Collection: [apple]
এখানে:
"a"
দিয়ে শুরু হয় কি না।PredicatedCollection
তৈরি করে list এর উপাদানগুলির মধ্যে শুধুমাত্র সেই উপাদানটি রাখা হয়েছে যেটি startsWith("a")
শর্ত পূর্ণ করে।"apple"
মাত্ৰ একটি উপাদান হিসেবে রয়ে গেছে, কারণ তা "a"
দিয়ে শুরু হয়।আপনি একাধিক predicate শর্ত ব্যবহার করে Predicated Collection তৈরি করতে পারেন। এই ক্ষেত্রে, আপনি একটি and বা or শর্তে predicates যোগ করতে পারেন।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.collection.PredicatedCollection;
import org.apache.commons.collections4.functors.AllPredicate;
import org.apache.commons.collections4.functors.NotPredicate;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("orange");
// Predicate তৈরি করা (যেখানে উপাদানটি 'a' দিয়ে শুরু হতে হবে এবং 5 অক্ষরের কম হবে)
Predicate<String> startsWithAPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.startsWith("a");
}
};
Predicate<String> lengthPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.length() < 6;
}
};
// Multiple predicates কে AllPredicate তে সংযুক্ত করা
Predicate<String> combinedPredicate = new AllPredicate<>(startsWithAPredicate, lengthPredicate);
// PredicatedCollection তৈরি করা
PredicatedCollection<String> predicatedCollection = new PredicatedCollection<>(list, combinedPredicate);
// PredicatedCollection এর উপাদান ফিল্টার করা
System.out.println("Filtered Collection: " + predicatedCollection);
}
}
আউটপুট:
Filtered Collection: [apple]
এখানে:
"a"
দিয়ে শুরু হচ্ছে কি না।AllPredicate
ব্যবহার করে দুটি predicate একসাথে and শর্তে সংযুক্ত করেছি। এর ফলে শুধুমাত্র "apple"
উপাদানটি শর্ত পূর্ণ করেছে, কারণ এটি "a"
দিয়ে শুরু হয় এবং এর দৈর্ঘ্য ৫ অক্ষরের কম।Apache Commons Collections লাইব্রেরিতে CollectionUtils ক্লাস রয়েছে, যা কিছু সাহায্যকারী মেথড সরবরাহ করে, যার মধ্যে predicatedCollection একটি গুরুত্বপূর্ণ মেথড।
CollectionUtils.filter
ব্যবহার করে Predicated Collection তৈরিimport org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("orange");
// Predicate তৈরি করা (যেখানে উপাদানটি 'b' দিয়ে শুরু হতে হবে)
Predicate<String> startsWithB = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.startsWith("b");
}
};
// CollectionUtils.filter ব্যবহার করে Predicated Collection তৈরি
CollectionUtils.filter(list, startsWithB);
// Filtered collection দেখানো
System.out.println("Filtered Collection: " + list);
}
}
আউটপুট:
Filtered Collection: [banana]
এখানে:
CollectionUtils.filter
ফাংশনটি ব্যবহার করে, আমরা list এ শুধুমাত্র সেই উপাদান রাখার জন্য predicate প্রয়োগ করেছি যা "b"
দিয়ে শুরু হয়।"banana"
উপাদানটি রয়ে গেছে এবং বাকি উপাদানগুলি বাদ পড়ে গেছে।Apache Commons Collections এর Predicated Collection ফিচারটি Java প্রোগ্রামিংয়ে কার্যকরভাবে ব্যবহৃত হতে পারে যখন আপনাকে ডেটা সিলেকশন বা ফিল্টারিং করতে হয়।
common.read_more